Verwenden Sie die IEnumerable .Where Überladung, die den Index liefert.
var obst = statsname.Where ((s, i) => i% 2 == 0) .ToArray ();
var alphabets = statsname.Where ((s, i) => i% 2! = 0) .ToArray ();
|
Gestohlen aus Wie man alternative Elemente mit Enumerable in C # erhält
var obst = myArray.Where ((t, i) => i% 2 == 0) .ToArray ();
var alphabets = myArray.Where ((t, i) => i% 2 == 1) .ToArray ();
|
Wenn ich verstanden habe, dass Sie richtig fragen, was Sie wollen, ist sehr einfach:
Sie möchten Früchte in eine Reihe von Früchten und die gleichen für Alphabete einfügen, und sie werden alternativ in einer Reihe von Statistiknamen angezeigt, also:
für (int i = 0, j = 0; i list = new List () {"Apfel", "X", "Banane", "Y", "Kiwi", "z"};
var result = list.Select ((l, i) => new {l, i})
.GroupBy (p => p.i% 2)
.Select (x => x.Select (v => v.l) .ToList ())
.Auflisten();
Dann haben Sie eine Liste von Listen:
|
list obst = new List ();
list alphabet = new List ();
für (int i = 0; i everyOther (IEnumerable -Sammlung)
{
using (var e = collection.GetEnumerator ()) {
while (e.MoveNext ()) {
Rendite Rendite e.Current;
e.MoveNext (); // eins überspringen
}}
}}
}}
Mit System.Linq.Skip können Sie das erste Element überspringen.
string [] words = "Apfel X Banane Y Kiwi z" .Split ();
var Früchte = alle anderen (Wörter);
var alphabets = everyOther (words.Skip (1));
Verwenden Sie sie einfach als neue Sammlung oder rufen Sie .ToArray () oder .ToList () auf:
foreach (String f in Früchten)
Console.WriteLine (f);
string [] anArray = obst.ToArray (); // mit System.Linq
Jetzt haben Sie was Sie brauchen.
Iteratoren sind Methoden, die eine Rendite erzielen, siehe Iteratoren (C # -Programmierhandbuch). Dies ist ein sehr starkes Merkmal der Sprache. Sie können:
Elemente überspringen
Elemente dekorieren
Bestellung ändern
Sequenzen verketten (siehe System.Linq.Concat)
...
|
Hier ist ein Arbeitscode, der Ihnen hoffentlich weiterhelfen wird:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
Namespace ReadFile
{
Klassenprogramm
{
statische Leere ReadFile (Zeichenfolge filePath, List custumerNames, List phoneNumbers)
{
string line = string.Empty;
var fileStream = neuer StreamReader (filePath);
bool isPhoneNumber = true;
while ((line = fileStream.ReadLine ())! = null)
{
if (isPhoneNumber)
{
phoneNumbers.Add (Convert.ToInt32 (Zeile));
isPhoneNumber = false;
}}
sonst
{
custumerNames.Add (Zeile);
isPhoneNumber = true;
}}
}}
fileStream.Close ();
}}
statische Leere Main (string [] args)
{
Console.WriteLine ("Begonnen, die Datei zu lesen ...");
List custumersNamesList = new List ();
List custumersPhonesNumbers = new List ();
ReadFile ("SampleFile.txt", custumersNamesList, custumersPhonesNumbers);
// Angenommen, beide Listen haben dieselbe Länge.
for (int i = 0; i